# 1 "end.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "end.c"
# 1 "end.h" 1

# 1 "/usr/local/include/gdsl.h" 1 3
# 37 "/usr/local/include/gdsl.h" 3
# 1 "/usr/local/include/gdsl/gdsl_types.h" 1 3
# 30 "/usr/local/include/gdsl/gdsl_types.h" 3
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 322 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 324 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 325 "/usr/include/sys/cdefs.h" 2 3 4
# 323 "/usr/include/features.h" 2 3 4
# 345 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4



# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 5 "/usr/include/gnu/stubs.h" 2 3 4


# 1 "/usr/include/gnu/stubs-32.h" 1 3 4
# 8 "/usr/include/gnu/stubs.h" 2 3 4
# 346 "/usr/include/features.h" 2 3 4
# 29 "/usr/include/stdio.h" 2 3 4





# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 214 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 3 4
typedef unsigned int size_t;
# 35 "/usr/include/stdio.h" 2 3 4

# 1 "/usr/include/bits/types.h" 1 3 4
# 28 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4


# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 32 "/usr/include/bits/types.h" 2 3 4


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;


typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;




__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;







__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
# 134 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 135 "/usr/include/bits/types.h" 2 3 4


__extension__ typedef __u_quad_t __dev_t;
__extension__ typedef unsigned int __uid_t;
__extension__ typedef unsigned int __gid_t;
__extension__ typedef unsigned long int __ino_t;
__extension__ typedef __u_quad_t __ino64_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef unsigned int __nlink_t;
__extension__ typedef long int __off_t;
__extension__ typedef __quad_t __off64_t;
__extension__ typedef int __pid_t;
__extension__ typedef struct { int __val[2]; } __fsid_t;
__extension__ typedef long int __clock_t;
__extension__ typedef unsigned long int __rlim_t;
__extension__ typedef __u_quad_t __rlim64_t;
__extension__ typedef unsigned int __id_t;
__extension__ typedef long int __time_t;
__extension__ typedef unsigned int __useconds_t;
__extension__ typedef long int __suseconds_t;

__extension__ typedef int __daddr_t;
__extension__ typedef long int __swblk_t;
__extension__ typedef int __key_t;


__extension__ typedef int __clockid_t;


__extension__ typedef void * __timer_t;


__extension__ typedef long int __blksize_t;




__extension__ typedef long int __blkcnt_t;
__extension__ typedef __quad_t __blkcnt64_t;


__extension__ typedef unsigned long int __fsblkcnt_t;
__extension__ typedef __u_quad_t __fsblkcnt64_t;


__extension__ typedef unsigned long int __fsfilcnt_t;
__extension__ typedef __u_quad_t __fsfilcnt64_t;

__extension__ typedef int __ssize_t;



typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;


__extension__ typedef int __intptr_t;


__extension__ typedef unsigned int __socklen_t;
# 37 "/usr/include/stdio.h" 2 3 4
# 45 "/usr/include/stdio.h" 3 4
struct _IO_FILE;



typedef struct _IO_FILE FILE;





# 65 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 75 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 14 "/usr/include/_G_config.h" 3 4
# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 326 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 3 4
typedef int wchar_t;
# 355 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3 4
# 24 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4

# 1 "/usr/include/bits/wchar.h" 1 3 4
# 51 "/usr/include/wchar.h" 2 3 4
# 76 "/usr/include/wchar.h" 3 4
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3 4

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/gconv.h" 1 3 4
# 28 "/usr/include/gconv.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 29 "/usr/include/gconv.h" 2 3 4


# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 32 "/usr/include/gconv.h" 2 3 4





enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,

  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,

  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};



enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002
};



struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;



typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
       __const unsigned char **, __const unsigned char *,
       unsigned char **, size_t *, int, int);


typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);


typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);



typedef int (*__gconv_trans_fct) (struct __gconv_step *,
      struct __gconv_step_data *, void *,
      __const unsigned char *,
      __const unsigned char **,
      __const unsigned char *, unsigned char **,
      size_t *);


typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
       __const unsigned char *,
       unsigned char *, unsigned char *);


typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
     size_t *);


typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);

struct __gconv_trans_data
{

  __gconv_trans_fct __trans_fct;
  __gconv_trans_context_fct __trans_context_fct;
  __gconv_trans_end_fct __trans_end_fct;
  void *__data;
  struct __gconv_trans_data *__next;
};



struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  __const char *__modname;

  int __counter;

  char *__from_name;
  char *__to_name;

  __gconv_fct __fct;
  __gconv_btowc_fct __btowc_fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;



  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;


  int __stateful;

  void *__data;
};



struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;



  int __flags;



  int __invocation_counter;



  int __internal_use;

  __mbstate_t *__statep;
  __mbstate_t __state;



  struct __gconv_trans_data *__trans;
};



typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3 4
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;

typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 33 "/usr/include/libio.h" 2 3 4
# 53 "/usr/include/libio.h" 3 4
# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stdarg.h" 1 3 4
# 43 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3 4
# 167 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 177 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 200 "/usr/include/libio.h" 3 4
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 268 "/usr/include/libio.h" 3 4
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;



  int _flags2;

  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 316 "/usr/include/libio.h" 3 4
  __off64_t _offset;
# 325 "/usr/include/libio.h" 3 4
  void *__pad1;
  void *__pad2;
  void *__pad3;
  void *__pad4;
  size_t __pad5;

  int _mode;

  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 361 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
     size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);
# 413 "/usr/include/libio.h" 3 4
extern int __underflow (_IO_FILE *);
extern int __uflow (_IO_FILE *);
extern int __overflow (_IO_FILE *, int);
extern wint_t __wunderflow (_IO_FILE *);
extern wint_t __wuflow (_IO_FILE *);
extern wint_t __woverflow (_IO_FILE *, wint_t);
# 451 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp);
extern int _IO_putc (int __c, _IO_FILE *__fp);
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));

extern int _IO_peekc_locked (_IO_FILE *__fp);





extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
# 481 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
   __gnuc_va_list, int *__restrict);
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
    __gnuc_va_list);
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);

extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
# 76 "/usr/include/stdio.h" 2 3 4
# 89 "/usr/include/stdio.h" 3 4


typedef _G_fpos_t fpos_t;




# 141 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 142 "/usr/include/stdio.h" 2 3 4



extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;







extern int remove (__const char *__filename) __attribute__ ((__nothrow__));

extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));














extern FILE *tmpfile (void) ;
# 186 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;





extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
# 204 "/usr/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;








extern int fclose (FILE *__stream);




extern int fflush (FILE *__stream);

# 229 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 243 "/usr/include/stdio.h" 3 4






extern FILE *fopen (__const char *__restrict __filename,
      __const char *__restrict __modes) ;




extern FILE *freopen (__const char *__restrict __filename,
        __const char *__restrict __modes,
        FILE *__restrict __stream) ;
# 272 "/usr/include/stdio.h" 3 4

# 283 "/usr/include/stdio.h" 3 4
extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
# 304 "/usr/include/stdio.h" 3 4



extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) __attribute__ ((__nothrow__));





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) __attribute__ ((__nothrow__));


extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));








extern int fprintf (FILE *__restrict __stream,
      __const char *__restrict __format, ...);




extern int printf (__const char *__restrict __format, ...);

extern int sprintf (char *__restrict __s,
      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));





extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg);




extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));





extern int snprintf (char *__restrict __s, size_t __maxlen,
       __const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        __const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));

# 398 "/usr/include/stdio.h" 3 4





extern int fscanf (FILE *__restrict __stream,
     __const char *__restrict __format, ...) ;




extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
     __const char *__restrict __format, ...) __attribute__ ((__nothrow__));

# 440 "/usr/include/stdio.h" 3 4





extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);





extern int getchar (void);

# 464 "/usr/include/stdio.h" 3 4
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 475 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);











extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);





extern int putchar (int __c);

# 508 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);







extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);






extern int getw (FILE *__stream);


extern int putw (int __w, FILE *__stream);








extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;






extern char *gets (char *__s) ;

# 589 "/usr/include/stdio.h" 3 4





extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);





extern int puts (__const char *__s);






extern int ungetc (int __c, FILE *__stream);






extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;




extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s) ;

# 642 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream) ;








extern int fseek (FILE *__stream, long int __off, int __whence);




extern long int ftell (FILE *__stream) ;




extern void rewind (FILE *__stream);

# 678 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence);




extern __off_t ftello (FILE *__stream) ;
# 697 "/usr/include/stdio.h" 3 4






extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);




extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
# 720 "/usr/include/stdio.h" 3 4

# 729 "/usr/include/stdio.h" 3 4


extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));

extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;

extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;




extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;








extern void perror (__const char *__s);






# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 759 "/usr/include/stdio.h" 2 3 4




extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;




extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
# 778 "/usr/include/stdio.h" 3 4
extern FILE *popen (__const char *__command, __const char *__modes) ;





extern int pclose (FILE *__stream);





extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
# 818 "/usr/include/stdio.h" 3 4
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));



extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;


extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
# 848 "/usr/include/stdio.h" 3 4

# 31 "/usr/local/include/gdsl/gdsl_types.h" 2 3
# 48 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef enum
{

    GDSL_ERR_MEM_ALLOC = -1,


    GDSL_MAP_STOP = 0,


    GDSL_MAP_CONT = 1,


    GDSL_INSERTED,


    GDSL_FOUND

} gdsl_constant_t;



typedef enum
{

    GDSL_LOCATION_UNDEF = 0,



    GDSL_LOCATION_HEAD = 1,



    GDSL_LOCATION_ROOT = 1,



    GDSL_LOCATION_TOP = 1,



    GDSL_LOCATION_TAIL = 2,



    GDSL_LOCATION_LEAF = 2,



    GDSL_LOCATION_BOTTOM = 2,



    GDSL_LOCATION_FIRST = 1,



    GDSL_LOCATION_LAST = 2,



    GDSL_LOCATION_FIRST_COL = 1,



    GDSL_LOCATION_LAST_COL = 2,



    GDSL_LOCATION_FIRST_ROW = 4,



    GDSL_LOCATION_LAST_ROW = 8

} gdsl_location_t;







typedef void* gdsl_element_t;
# 143 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef gdsl_element_t
(* gdsl_alloc_func_t) (void* USER_DATA
         );
# 161 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef void
(* gdsl_free_func_t) (gdsl_element_t E
        );
# 174 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef gdsl_element_t
(* gdsl_copy_func_t) (const gdsl_element_t E
        );
# 191 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef int
(* gdsl_map_func_t) (const gdsl_element_t E,
       gdsl_location_t LOCATION,
       void* USER_DATA
       );
# 212 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef long int
(* gdsl_compare_func_t) (const gdsl_element_t E,
    void* VALUE
    );
# 228 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef void
(* gdsl_write_func_t) (const gdsl_element_t E,
         FILE* OUTPUT_FILE,
         gdsl_location_t LOCATION,
         void* USER_DATA
         );





# 1 "/usr/include/sys/types.h" 1 3 4
# 29 "/usr/include/sys/types.h" 3 4






typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;




typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 62 "/usr/include/sys/types.h" 3 4
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;
# 100 "/usr/include/sys/types.h" 3 4
typedef __pid_t pid_t;




typedef __id_t id_t;




typedef __ssize_t ssize_t;





typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;





typedef __key_t key_t;
# 133 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 75 "/usr/include/time.h" 3 4


typedef __time_t time_t;



# 93 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 105 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 134 "/usr/include/sys/types.h" 2 3 4
# 147 "/usr/include/sys/types.h" 3 4
# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 148 "/usr/include/sys/types.h" 2 3 4



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 195 "/usr/include/sys/types.h" 3 4
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 217 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 218 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4


# 1 "/usr/include/bits/sigset.h" 1 3 4
# 24 "/usr/include/bits/sigset.h" 3 4
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3 4



typedef __sigset_t sigset_t;





# 1 "/usr/include/time.h" 1 3 4
# 121 "/usr/include/time.h" 3 4
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };
# 45 "/usr/include/sys/select.h" 2 3 4

# 1 "/usr/include/bits/time.h" 1 3 4
# 69 "/usr/include/bits/time.h" 3 4
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 47 "/usr/include/sys/select.h" 2 3 4


typedef __suseconds_t suseconds_t;





typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3 4
typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];


  } fd_set;






typedef __fd_mask fd_mask;
# 99 "/usr/include/sys/select.h" 3 4

# 109 "/usr/include/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
# 121 "/usr/include/sys/select.h" 3 4
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);



# 221 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/sysmacros.h" 1 3 4
# 30 "/usr/include/sys/sysmacros.h" 3 4
__extension__
extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
       unsigned int __minor)
     __attribute__ ((__nothrow__));


__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
{
  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}

__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
{
  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}

__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
{
  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
   | (((unsigned long long int) (__minor & ~0xff)) << 12)
   | (((unsigned long long int) (__major & ~0xfff)) << 32));
}
# 224 "/usr/include/sys/types.h" 2 3 4
# 235 "/usr/include/sys/types.h" 3 4
typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 270 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 36 "/usr/include/bits/pthreadtypes.h" 3 4
typedef unsigned long int pthread_t;


typedef union
{
  char __size[36];
  long int __align;
} pthread_attr_t;


typedef struct __pthread_internal_slist
{
  struct __pthread_internal_slist *__next;
} __pthread_slist_t;




typedef union
{
  struct __pthread_mutex_s
  {
    int __lock;
    unsigned int __count;
    int __owner;


    int __kind;
    unsigned int __nusers;
    __extension__ union
    {
      int __spins;
      __pthread_slist_t __list;
    };
  } __data;
  char __size[24];
  long int __align;
} pthread_mutex_t;

typedef union
{
  char __size[4];
  long int __align;
} pthread_mutexattr_t;




typedef union
{
  struct
  {
    int __lock;
    unsigned int __futex;
    __extension__ unsigned long long int __total_seq;
    __extension__ unsigned long long int __wakeup_seq;
    __extension__ unsigned long long int __woken_seq;
    void *__mutex;
    unsigned int __nwaiters;
    unsigned int __broadcast_seq;
  } __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;

typedef union
{
  char __size[4];
  long int __align;
} pthread_condattr_t;



typedef unsigned int pthread_key_t;



typedef int pthread_once_t;





typedef union
{
  struct
  {
    int __lock;
    unsigned int __nr_readers;
    unsigned int __readers_wakeup;
    unsigned int __writer_wakeup;
    unsigned int __nr_readers_queued;
    unsigned int __nr_writers_queued;


    unsigned int __flags;
    int __writer;
  } __data;
  char __size[32];
  long int __align;
} pthread_rwlock_t;

typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;





typedef volatile int pthread_spinlock_t;




typedef union
{
  char __size[20];
  long int __align;
} pthread_barrier_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_barrierattr_t;
# 271 "/usr/include/sys/types.h" 2 3 4



# 240 "/usr/local/include/gdsl/gdsl_types.h" 2 3
# 271 "/usr/local/include/gdsl/gdsl_types.h" 3
typedef enum
{

  FALSE = 0,


  TRUE = 1
} bool;
# 38 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_macros.h" 1 3
# 39 "/usr/local/include/gdsl.h" 2 3






# 1 "/usr/local/include/gdsl/gdsl_list.h" 1 3
# 31 "/usr/local/include/gdsl/gdsl_list.h" 3
# 1 "/usr/local/include/gdsl/gdsl_types.h" 1 3
# 32 "/usr/local/include/gdsl/gdsl_list.h" 2 3
# 51 "/usr/local/include/gdsl/gdsl_list.h" 3
typedef struct _gdsl_list* gdsl_list_t;







typedef struct _gdsl_list_cursor* gdsl_list_cursor_t;
# 85 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_t
gdsl_list_alloc (const char* NAME,
   gdsl_alloc_func_t ALLOC_F,
   gdsl_free_func_t FREE_F
   );
# 103 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_free (gdsl_list_t L
  );
# 120 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_flush (gdsl_list_t L
   );
# 137 "/usr/local/include/gdsl/gdsl_list.h" 3
extern const char*
gdsl_list_get_name (const gdsl_list_t L
      );
# 148 "/usr/local/include/gdsl/gdsl_list.h" 3
extern ulong
gdsl_list_get_size (const gdsl_list_t L
      );
# 160 "/usr/local/include/gdsl/gdsl_list.h" 3
extern bool
gdsl_list_is_empty (const gdsl_list_t L
      );
# 174 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_get_head (const gdsl_list_t L
      );
# 188 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_get_tail (const gdsl_list_t L
      );
# 209 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_t
gdsl_list_set_name (gdsl_list_t L,
      const char* NEW_NAME
      );
# 232 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_insert_head (gdsl_list_t L,
         void* VALUE
         );
# 255 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_insert_tail (gdsl_list_t L,
         void* VALUE
         );
# 275 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_remove_head (gdsl_list_t L
         );
# 294 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_remove_tail (gdsl_list_t L
         );
# 316 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_remove (gdsl_list_t L,
    gdsl_compare_func_t COMP_F,
    const void* VALUE
    );
# 337 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_t
gdsl_list_delete_head (gdsl_list_t L
         );
# 356 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_t
gdsl_list_delete_tail (gdsl_list_t L
         );
# 378 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_t
gdsl_list_delete (gdsl_list_t L,
    gdsl_compare_func_t COMP_F,
    const void* VALUE
    );
# 405 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_search (const gdsl_list_t L,
    gdsl_compare_func_t COMP_F,
    const void* VALUE
    );
# 423 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_search_by_position (const gdsl_list_t L,
         ulong POS
         );
# 444 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_search_max (const gdsl_list_t L,
        gdsl_compare_func_t COMP_F
        );
# 465 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_search_min (const gdsl_list_t L,
        gdsl_compare_func_t COMP_F
        );
# 486 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_t
gdsl_list_sort (gdsl_list_t L,
  gdsl_compare_func_t COMP_F
  );
# 512 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_map_forward (const gdsl_list_t L,
         gdsl_map_func_t MAP_F,
         void* USER_DATA
         );
# 535 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_map_backward (const gdsl_list_t L,
   gdsl_map_func_t MAP_F,
   void* USER_DATA
   );
# 560 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_write (const gdsl_list_t L,
   gdsl_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 583 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_write_xml (const gdsl_list_t L,
       gdsl_write_func_t WRITE_F,
       FILE* OUTPUT_FILE,
       void* USER_DATA
       );
# 606 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_dump (const gdsl_list_t L,
  gdsl_write_func_t WRITE_F,
  FILE* OUTPUT_FILE,
  void* USER_DATA
  );
# 626 "/usr/local/include/gdsl/gdsl_list.h" 3
gdsl_list_cursor_t
gdsl_list_cursor_alloc (const gdsl_list_t L
   );







void
gdsl_list_cursor_free (gdsl_list_cursor_t C
         );
# 650 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_cursor_move_to_head (gdsl_list_cursor_t C
          );
# 664 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_cursor_move_to_tail (gdsl_list_cursor_t C
          );
# 683 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_move_to_value (gdsl_list_cursor_t C,
    gdsl_compare_func_t COMP_F,
    void* VALUE
    );
# 703 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_move_to_position (gdsl_list_cursor_t C,
       ulong POS
       );
# 719 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_cursor_step_forward (gdsl_list_cursor_t C
          );
# 734 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
gdsl_list_cursor_step_backward (gdsl_list_cursor_t C
    );
# 747 "/usr/local/include/gdsl/gdsl_list.h" 3
extern bool
gdsl_list_cursor_is_on_head (const gdsl_list_cursor_t C
        );
# 760 "/usr/local/include/gdsl/gdsl_list.h" 3
extern bool
gdsl_list_cursor_is_on_tail (const gdsl_list_cursor_t C
        );
# 773 "/usr/local/include/gdsl/gdsl_list.h" 3
extern bool
gdsl_list_cursor_has_succ (const gdsl_list_cursor_t C
      );
# 786 "/usr/local/include/gdsl/gdsl_list.h" 3
extern bool
gdsl_list_cursor_has_pred (const gdsl_list_cursor_t C
      );
# 803 "/usr/local/include/gdsl/gdsl_list.h" 3
extern void
 gdsl_list_cursor_set_content (gdsl_list_cursor_t C,
          gdsl_element_t E
          );
# 815 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_get_content (const gdsl_list_cursor_t C
         );
# 837 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_insert_after (gdsl_list_cursor_t C,
          void* VALUE
          );
# 859 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_insert_before (gdsl_list_cursor_t C,
    void* VALUE
    );
# 877 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_remove (gdsl_list_cursor_t C
    );
# 893 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_remove_after (gdsl_list_cursor_t C
          );
# 909 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_element_t
gdsl_list_cursor_remove_before (gdsl_list_cursor_t C
    );
# 928 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_cursor_t
gdsl_list_cursor_delete (gdsl_list_cursor_t C
    );
# 947 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_cursor_t
gdsl_list_cursor_delete_after (gdsl_list_cursor_t C
          );
# 965 "/usr/local/include/gdsl/gdsl_list.h" 3
extern gdsl_list_cursor_t
gdsl_list_cursor_delete_before (gdsl_list_cursor_t C
    );
# 46 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_stack.h" 1 3
# 53 "/usr/local/include/gdsl/gdsl_stack.h" 3
typedef struct _gdsl_stack* gdsl_stack_t;
# 79 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_stack_t
gdsl_stack_alloc (const char* NAME,
    gdsl_alloc_func_t ALLOC_F,
    gdsl_free_func_t FREE_F
    );
# 98 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern void
gdsl_stack_free (gdsl_stack_t S
   );
# 115 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern void
gdsl_stack_flush (gdsl_stack_t S
    );
# 132 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern const char*
gdsl_stack_get_name (const gdsl_stack_t S
       );
# 143 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern ulong
gdsl_stack_get_size (const gdsl_stack_t S
       );
# 164 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern ulong
gdsl_stack_get_growing_factor (const gdsl_stack_t S
          );
# 176 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern bool
gdsl_stack_is_empty (const gdsl_stack_t S
       );
# 190 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_get_top (const gdsl_stack_t S
      );
# 204 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_get_bottom (const gdsl_stack_t S
         );
# 225 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_stack_t
gdsl_stack_set_name (gdsl_stack_t S,
       const char* NEW_NAME
       );
# 248 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern void
gdsl_stack_set_growing_factor (gdsl_stack_t S,
          ulong G
          );
# 272 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_insert (gdsl_stack_t S,
     void* VALUE
     );
# 289 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_remove (gdsl_stack_t S
     );
# 312 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_search (const gdsl_stack_t S,
     gdsl_compare_func_t COMP_F,
     void* VALUE
     );
# 328 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_search_by_position (const gdsl_stack_t S,
          ulong POS
          );
# 354 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_map_forward (const gdsl_stack_t S,
   gdsl_map_func_t MAP_F,
   void* USER_DATA
   );
# 377 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern gdsl_element_t
gdsl_stack_map_backward (const gdsl_stack_t S,
    gdsl_map_func_t MAP_F,
    void* USER_DATA
    );
# 402 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern void
gdsl_stack_write (const gdsl_stack_t S,
    gdsl_write_func_t WRITE_F,
    FILE* OUTPUT_FILE,
    void* USER_DATA
    );
# 425 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern void
gdsl_stack_write_xml (gdsl_stack_t S,
        gdsl_write_func_t WRITE_F,
        FILE* OUTPUT_FILE,
        void* USER_DATA
        );
# 448 "/usr/local/include/gdsl/gdsl_stack.h" 3
extern void
gdsl_stack_dump (gdsl_stack_t S,
   gdsl_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 47 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_queue.h" 1 3
# 54 "/usr/local/include/gdsl/gdsl_queue.h" 3
typedef struct _gdsl_queue* gdsl_queue_t;
# 80 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_queue_t
gdsl_queue_alloc (const char* NAME,
    gdsl_alloc_func_t ALLOC_F,
    gdsl_free_func_t FREE_F
    );
# 99 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern void
gdsl_queue_free (gdsl_queue_t Q
   );
# 116 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern void
gdsl_queue_flush (gdsl_queue_t Q
    );
# 133 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern const char*
gdsl_queue_get_name (const gdsl_queue_t Q
       );
# 144 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern ulong
gdsl_queue_get_size (const gdsl_queue_t Q
       );
# 156 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern bool
gdsl_queue_is_empty (const gdsl_queue_t Q
       );
# 170 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_get_head (const gdsl_queue_t Q
       );
# 184 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_get_tail (const gdsl_queue_t Q
       );
# 205 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_queue_t
gdsl_queue_set_name (gdsl_queue_t Q,
       const char* NEW_NAME
       );
# 225 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_insert (gdsl_queue_t Q,
     void* VALUE
     );
# 242 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_remove (gdsl_queue_t Q
     );
# 265 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_search (const gdsl_queue_t Q,
     gdsl_compare_func_t COMP_F,
     void* VALUE
     );
# 281 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_search_by_position (const gdsl_queue_t Q,
          ulong POS
          );
# 307 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_map_forward (const gdsl_queue_t Q,
   gdsl_map_func_t MAP_F,
   void* USER_DATA
   );
# 330 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern gdsl_element_t
gdsl_queue_map_backward (const gdsl_queue_t Q,
    gdsl_map_func_t MAP_F,
    void* USER_DATA
    );
# 355 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern void
gdsl_queue_write (const gdsl_queue_t Q,
    gdsl_write_func_t WRITE_F,
    FILE* OUTPUT_FILE,
    void* USER_DATA
    );
# 378 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern void
gdsl_queue_write_xml (const gdsl_queue_t Q,
        gdsl_write_func_t WRITE_F,
        FILE* OUTPUT_FILE,
        void* USER_DATA
        );
# 401 "/usr/local/include/gdsl/gdsl_queue.h" 3
extern void
gdsl_queue_dump (const gdsl_queue_t Q,
   gdsl_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 48 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_2darray.h" 1 3
# 53 "/usr/local/include/gdsl/gdsl_2darray.h" 3
typedef struct gdsl_2darray* gdsl_2darray_t;
# 83 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern gdsl_2darray_t
gdsl_2darray_alloc (const char* NAME,
      const ulong R,
      const ulong C,
      const gdsl_alloc_func_t ALLOC_F,
      const gdsl_free_func_t FREE_F
      );
# 106 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern void
gdsl_2darray_free (gdsl_2darray_t A
     );
# 123 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern const char*
gdsl_2darray_get_name (const gdsl_2darray_t A
         );
# 136 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern ulong
gdsl_2darray_get_rows_number (const gdsl_2darray_t A
         );
# 149 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern ulong
gdsl_2darray_get_columns_number (const gdsl_2darray_t A
     );
# 162 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern ulong
gdsl_2darray_get_size (const gdsl_2darray_t A
         );
# 178 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern gdsl_element_t
gdsl_2darray_get_content (const gdsl_2darray_t A,
     const ulong R,
     const ulong C
     );
# 201 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern gdsl_2darray_t
gdsl_2darray_set_name (gdsl_2darray_t A,
         const char* NEW_NAME
         );
# 227 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern gdsl_element_t
gdsl_2darray_set_content (gdsl_2darray_t A,
     const ulong R,
     const ulong C,
     void* VALUE
     );
# 254 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern void
gdsl_2darray_write (const gdsl_2darray_t A,
      const gdsl_write_func_t WRITE_F,
      FILE* OUTPUT_FILE,
      void* USER_DATA
      );
# 278 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern void
gdsl_2darray_write_xml (const gdsl_2darray_t A,
   const gdsl_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 302 "/usr/local/include/gdsl/gdsl_2darray.h" 3
extern void
gdsl_2darray_dump (const gdsl_2darray_t A,
     const gdsl_write_func_t WRITE_F,
     FILE* OUTPUT_FILE,
     void* USER_DATA
     );
# 49 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_bstree.h" 1 3
# 53 "/usr/local/include/gdsl/gdsl_bstree.h" 3
typedef struct gdsl_bstree* gdsl_bstree_t;
# 85 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_bstree_t
gdsl_bstree_alloc (const char* NAME,
     gdsl_alloc_func_t ALLOC_F,
     gdsl_free_func_t FREE_F,
     gdsl_compare_func_t COMP_F
     );
# 105 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern void
gdsl_bstree_free (gdsl_bstree_t T
    );
# 123 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern void
gdsl_bstree_flush (gdsl_bstree_t T
     );
# 140 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern const char*
gdsl_bstree_get_name (const gdsl_bstree_t T
        );
# 152 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern bool
gdsl_bstree_is_empty (const gdsl_bstree_t T
        );
# 163 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_element_t
gdsl_bstree_get_root (const gdsl_bstree_t T
        );
# 175 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern ulong
gdsl_bstree_get_size (const gdsl_bstree_t T
        );
# 187 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern ulong
gdsl_bstree_get_height (const gdsl_bstree_t T
   );
# 208 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_bstree_t
gdsl_bstree_set_name (gdsl_bstree_t T,
        const char* NEW_NAME
        );
# 235 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_element_t
gdsl_bstree_insert (gdsl_bstree_t T,
      void* VALUE,
      int* RESULT
      );
# 259 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_element_t
gdsl_bstree_remove (gdsl_bstree_t T,
      void* VALUE
      );
# 283 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_bstree_t
gdsl_bstree_delete (gdsl_bstree_t T,
      void* VALUE
      );
# 311 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_element_t
gdsl_bstree_search (const gdsl_bstree_t T,
      gdsl_compare_func_t COMP_F,
      void* VALUE
      );
# 339 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_element_t
gdsl_bstree_map_prefix (const gdsl_bstree_t T,
   gdsl_map_func_t MAP_F,
   void* USER_DATA
   );
# 363 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_element_t
gdsl_bstree_map_infix (const gdsl_bstree_t T,
         gdsl_map_func_t MAP_F,
         void* USER_DATA
         );
# 387 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern gdsl_element_t
gdsl_bstree_map_postfix (const gdsl_bstree_t T,
    gdsl_map_func_t MAP_F,
    void* USER_DATA
    );
# 413 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern void
gdsl_bstree_write (const gdsl_bstree_t T,
     gdsl_write_func_t WRITE_F,
     FILE* OUTPUT_FILE,
     void* USER_DATA
     );
# 438 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern void
gdsl_bstree_write_xml (const gdsl_bstree_t T,
         gdsl_write_func_t WRITE_F,
         FILE* OUTPUT_FILE,
         void* USER_DATA
         );
# 462 "/usr/local/include/gdsl/gdsl_bstree.h" 3
extern void
gdsl_bstree_dump (const gdsl_bstree_t T,
    gdsl_write_func_t WRITE_F,
    FILE* OUTPUT_FILE,
    void* USER_DATA
    );
# 50 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_perm.h" 1 3
# 50 "/usr/local/include/gdsl/gdsl_perm.h" 3
typedef struct gdsl_perm* gdsl_perm_t;




typedef enum
{

    GDSL_PERM_POSITION_FIRST = 1,


    GDSL_PERM_POSITION_LAST = 2

} gdsl_perm_position_t;
# 73 "/usr/local/include/gdsl/gdsl_perm.h" 3
typedef void (* gdsl_perm_write_func_t)
    (ulong E,
     FILE* OUTPUT_FILE,
     gdsl_location_t POSITION,
     void* USER_DATA
     );

typedef struct gdsl_perm_data* gdsl_perm_data_t;
# 102 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_alloc (const char* NAME,
   const ulong N
   );
# 118 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern void
gdsl_perm_free (gdsl_perm_t P
  );
# 136 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_copy (const gdsl_perm_t P
  );
# 153 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern const char*
gdsl_perm_get_name (const gdsl_perm_t P
      );
# 166 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern ulong
gdsl_perm_get_size (const gdsl_perm_t P
      );
# 180 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern ulong
gdsl_perm_get_element (const gdsl_perm_t P,
         const ulong INDIX
         );
# 194 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern ulong*
gdsl_perm_get_elements_array (const gdsl_perm_t P
         );
# 205 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern ulong
gdsl_perm_linear_inversions_count (const gdsl_perm_t P
       );
# 217 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern ulong
gdsl_perm_linear_cycles_count (const gdsl_perm_t P
          );
# 229 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern ulong
gdsl_perm_canonical_cycles_count (const gdsl_perm_t P
      );
# 250 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_set_name (gdsl_perm_t P,
      const char* NEW_NAME
      );
# 267 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_linear_next (gdsl_perm_t P
         );
# 283 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_linear_prev (gdsl_perm_t P
         );
# 302 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_set_elements_array (gdsl_perm_t P,
         const ulong* ARRAY
         );
# 325 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_multiply (gdsl_perm_t RESULT,
      const gdsl_perm_t ALPHA,
      const gdsl_perm_t BETA
      );
# 344 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_linear_to_canonical (gdsl_perm_t Q,
          const gdsl_perm_t P
          );
# 362 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_canonical_to_linear (gdsl_perm_t Q,
          const gdsl_perm_t P
          );
# 376 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_inverse (gdsl_perm_t P
     );
# 388 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_reverse (gdsl_perm_t P
     );
# 403 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_perm_t
gdsl_perm_randomize (gdsl_perm_t P
       );
# 417 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern gdsl_element_t*
gdsl_perm_apply_on_array (gdsl_element_t* V,
     const gdsl_perm_t P
     );
# 442 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern void
gdsl_perm_write (const gdsl_perm_t P,
   const gdsl_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 467 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern void
gdsl_perm_write_xml (const gdsl_perm_t P,
       const gdsl_write_func_t WRITE_F,
       FILE* OUTPUT_FILE,
       void* USER_DATA
       );
# 491 "/usr/local/include/gdsl/gdsl_perm.h" 3
extern void
gdsl_perm_dump (const gdsl_perm_t P,
  const gdsl_write_func_t WRITE_F,
  FILE* OUTPUT_FILE,
  void* USER_DATA
  );
# 51 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_rbtree.h" 1 3
# 31 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
# 1 "/usr/local/include/gdsl/_gdsl_bintree.h" 1 3
# 34 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
# 1 "/usr/local/include/gdsl/gdsl_macros.h" 1 3
# 35 "/usr/local/include/gdsl/_gdsl_bintree.h" 2 3
# 54 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
typedef struct _gdsl_bintree* _gdsl_bintree_t;
# 63 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
typedef int (* _gdsl_bintree_map_func_t) (const _gdsl_bintree_t TREE,
       void* USER_DATA
       );







typedef void (* _gdsl_bintree_write_func_t) (const _gdsl_bintree_t TREE,
          FILE* OUTPUT_FILE,
          void* USER_DATA
          );
# 97 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_alloc (const gdsl_element_t E,
       const _gdsl_bintree_t LEFT,
       const _gdsl_bintree_t RIGHT
       );
# 116 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_free (_gdsl_bintree_t T,
      const gdsl_free_func_t FREE_F
      );
# 138 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_copy (const _gdsl_bintree_t T,
      const gdsl_copy_func_t COPY_F
      );
# 157 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern bool
_gdsl_bintree_is_empty (const _gdsl_bintree_t T
   );
# 171 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern bool
_gdsl_bintree_is_leaf (const _gdsl_bintree_t T
         );
# 185 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern bool
_gdsl_bintree_is_root (const _gdsl_bintree_t T
         );
# 197 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern gdsl_element_t
_gdsl_bintree_get_content (const _gdsl_bintree_t T
      );
# 211 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_get_parent (const _gdsl_bintree_t T
     );
# 230 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_get_left (const _gdsl_bintree_t T
   );
# 249 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_get_right (const _gdsl_bintree_t T
    );
# 261 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t*
_gdsl_bintree_get_left_ref (const _gdsl_bintree_t T
       );
# 273 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t*
_gdsl_bintree_get_right_ref (const _gdsl_bintree_t T
        );
# 288 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern ulong
_gdsl_bintree_get_height (const _gdsl_bintree_t T
     );
# 300 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern ulong
_gdsl_bintree_get_size (const _gdsl_bintree_t T
   );
# 319 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_set_content (_gdsl_bintree_t T,
      const gdsl_element_t E
      );
# 335 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_set_parent (_gdsl_bintree_t T,
     const _gdsl_bintree_t P
     );
# 353 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_set_left (_gdsl_bintree_t T,
   const _gdsl_bintree_t L
   );
# 371 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_set_right (_gdsl_bintree_t T,
    const _gdsl_bintree_t R
    );
# 393 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_rotate_left (_gdsl_bintree_t* T
      );
# 410 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_rotate_right (_gdsl_bintree_t* T
       );
# 427 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_rotate_left_right (_gdsl_bintree_t* T
     );
# 444 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_rotate_right_left (_gdsl_bintree_t* T
     );
# 470 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_map_prefix (const _gdsl_bintree_t T,
     const _gdsl_bintree_map_func_t MAP_F,
     void* USER_DATA
     );
# 494 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_map_infix (const _gdsl_bintree_t T,
    const _gdsl_bintree_map_func_t MAP_F,
    void* USER_DATA
    );
# 518 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern _gdsl_bintree_t
_gdsl_bintree_map_postfix (const _gdsl_bintree_t T,
      const _gdsl_bintree_map_func_t MAP_F,
      void* USER_DATA
      );
# 544 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_write (const _gdsl_bintree_t T,
       const _gdsl_bintree_write_func_t WRITE_F,
       FILE* OUTPUT_FILE,
       void* USER_DATA
       );
# 568 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_write_xml (const _gdsl_bintree_t T,
    const _gdsl_bintree_write_func_t WRITE_F,
    FILE* OUTPUT_FILE,
    void* USER_DATA
    );
# 592 "/usr/local/include/gdsl/_gdsl_bintree.h" 3
extern void
_gdsl_bintree_dump (const _gdsl_bintree_t T,
      const _gdsl_bintree_write_func_t WRITE_F,
      FILE* OUTPUT_FILE,
      void* USER_DATA
      );
# 32 "/usr/local/include/gdsl/gdsl_rbtree.h" 2 3
# 52 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
typedef struct gdsl_rbtree* gdsl_rbtree_t;
# 81 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_rbtree_t
gdsl_rbtree_alloc (const char* NAME,
     gdsl_alloc_func_t ALLOC_F,
     gdsl_free_func_t FREE_F,
     gdsl_compare_func_t COMP_F
     );
# 101 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern void
gdsl_rbtree_free (gdsl_rbtree_t T
    );
# 117 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern void
gdsl_rbtree_flush (gdsl_rbtree_t T
     );
# 134 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern char*
gdsl_rbtree_get_name (const gdsl_rbtree_t T
        );
# 146 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern bool
gdsl_rbtree_is_empty (const gdsl_rbtree_t T
        );
# 157 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_element_t
gdsl_rbtree_get_root (const gdsl_rbtree_t T
        );
# 169 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern ulong
gdsl_rbtree_get_size (const gdsl_rbtree_t T
        );
# 181 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern ulong
gdsl_rbtree_height (const gdsl_rbtree_t T
      );
# 202 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_rbtree_t
gdsl_rbtree_set_name (gdsl_rbtree_t T,
        const char* NEW_NAME
        );
# 229 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_element_t
gdsl_rbtree_insert (gdsl_rbtree_t T,
      void* VALUE,
      int* RESULT
      );
# 251 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_element_t
gdsl_rbtree_remove (gdsl_rbtree_t T,
      void* VALUE
      );
# 273 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_rbtree_t
gdsl_rbtree_delete (gdsl_rbtree_t T,
      void* VALUE
      );
# 301 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_element_t
gdsl_rbtree_search (const gdsl_rbtree_t T,
      gdsl_compare_func_t COMP_F,
      void* VALUE
      );
# 329 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_element_t
gdsl_rbtree_map_prefix (const gdsl_rbtree_t T,
   gdsl_map_func_t MAP_F,
   void* USER_DATA
   );
# 353 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_element_t
gdsl_rbtree_map_infix (const gdsl_rbtree_t T,
         gdsl_map_func_t MAP_F,
         void* USER_DATA
         );
# 377 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern gdsl_element_t
gdsl_rbtree_map_postfix (const gdsl_rbtree_t T,
    gdsl_map_func_t MAP_F,
    void* USER_DATA
    );
# 403 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern void
gdsl_rbtree_write (const gdsl_rbtree_t T,
     gdsl_write_func_t WRITE_F,
     FILE* OUTPUT_FILE,
     void* USER_DATA
     );
# 428 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern void
gdsl_rbtree_write_xml (const gdsl_rbtree_t T,
         gdsl_write_func_t WRITE_F,
         FILE* OUTPUT_FILE,
         void* USER_DATA
         );
# 452 "/usr/local/include/gdsl/gdsl_rbtree.h" 3
extern void
gdsl_rbtree_dump (const gdsl_rbtree_t T,
    gdsl_write_func_t WRITE_F,
    FILE* OUTPUT_FILE,
    void* USER_DATA
    );
# 52 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_hash.h" 1 3
# 54 "/usr/local/include/gdsl/gdsl_hash.h" 3
typedef struct hash_table* gdsl_hash_t;







typedef const char* (*gdsl_key_func_t) (void* VALUE
     );






typedef ulong (*gdsl_hash_func_t) (const char* KEY
       );
# 87 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern ulong
gdsl_hash (const char* KEY
    );
# 127 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_hash_t
gdsl_hash_alloc (const char* NAME,
   gdsl_alloc_func_t ALLOC_F,
   gdsl_free_func_t FREE_F,
   gdsl_key_func_t KEY_F,
   gdsl_hash_func_t HASH_F,
   ushort INITIAL_ENTRIES_NB
   );
# 149 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern void
gdsl_hash_free (gdsl_hash_t H
  );
# 166 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern void
gdsl_hash_flush (gdsl_hash_t H
   );
# 183 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern const char*
gdsl_hash_get_name (const gdsl_hash_t H
      );
# 196 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern ushort
gdsl_hash_get_entries_number (const gdsl_hash_t H
         );
# 214 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern ushort
gdsl_hash_get_lists_max_size (const gdsl_hash_t H
         );
# 229 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern ushort
gdsl_hash_get_longest_list_size (const gdsl_hash_t H
     );
# 243 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern ulong
gdsl_hash_get_size (const gdsl_hash_t H
      );
# 257 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern double
gdsl_hash_get_fill_factor (const gdsl_hash_t H
      );
# 278 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_hash_t
gdsl_hash_set_name (gdsl_hash_t H,
      const char* NEW_NAME
      );
# 312 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_element_t
gdsl_hash_insert (gdsl_hash_t H,
    void* VALUE
    );
# 333 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_element_t
gdsl_hash_remove (gdsl_hash_t H,
    const char* KEY
    );
# 354 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_hash_t
gdsl_hash_delete (gdsl_hash_t H,
    const char* KEY
    );
# 387 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_hash_t
gdsl_hash_modify (gdsl_hash_t H,
    ushort NEW_ENTRIES_NB,
    ushort NEW_LISTS_MAX_SIZE
    );
# 412 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_element_t
gdsl_hash_search (const gdsl_hash_t H,
    const char* KEY
    );
# 436 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern gdsl_element_t
gdsl_hash_map (const gdsl_hash_t H,
        gdsl_map_func_t MAP_F,
        void* USER_DATA
        );
# 461 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern void
gdsl_hash_write (const gdsl_hash_t H,
   gdsl_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 484 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern void
gdsl_hash_write_xml (const gdsl_hash_t H,
       gdsl_write_func_t WRITE_F,
       FILE* OUTPUT_FILE,
       void* USER_DATA
       );
# 507 "/usr/local/include/gdsl/gdsl_hash.h" 3
extern void
gdsl_hash_dump (const gdsl_hash_t H,
  gdsl_write_func_t WRITE_F,
  FILE* OUTPUT_FILE,
  void* USER_DATA
  );
# 53 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/gdsl_sort.h" 1 3
# 55 "/usr/local/include/gdsl/gdsl_sort.h" 3
extern void
gdsl_sort (gdsl_element_t* T,
    ulong N,
    const gdsl_compare_func_t COMP_F
    );
# 54 "/usr/local/include/gdsl.h" 2 3





# 1 "/usr/local/include/gdsl/_gdsl_list.h" 1 3
# 33 "/usr/local/include/gdsl/_gdsl_list.h" 3
# 1 "/usr/local/include/gdsl/_gdsl_node.h" 1 3
# 53 "/usr/local/include/gdsl/_gdsl_node.h" 3
typedef struct _gdsl_node* _gdsl_node_t;
# 62 "/usr/local/include/gdsl/_gdsl_node.h" 3
typedef int (* _gdsl_node_map_func_t) (const _gdsl_node_t NODE,
           void* USER_DATA
           );







typedef void (* _gdsl_node_write_func_t) (const _gdsl_node_t NODE,
       FILE* OUTPUT_FILE,
       void* USER_DATA
       );
# 92 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern _gdsl_node_t
_gdsl_node_alloc (void);
# 105 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern gdsl_element_t
_gdsl_node_free (_gdsl_node_t NODE
   );
# 124 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern _gdsl_node_t
_gdsl_node_get_succ (const _gdsl_node_t NODE
       );
# 139 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern _gdsl_node_t
_gdsl_node_get_pred (const _gdsl_node_t NODE
       );
# 152 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern gdsl_element_t
_gdsl_node_get_content (const _gdsl_node_t NODE
   );
# 171 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_set_succ (_gdsl_node_t NODE,
       const _gdsl_node_t SUCC
       );
# 187 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_set_pred (_gdsl_node_t NODE,
       const _gdsl_node_t PRED
       );
# 203 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_set_content (_gdsl_node_t NODE,
   const gdsl_element_t CONTENT
   );
# 220 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_link (_gdsl_node_t NODE1,
   _gdsl_node_t NODE2
   );
# 237 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_unlink (_gdsl_node_t NODE1,
     _gdsl_node_t NODE2
     );
# 261 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_write (const _gdsl_node_t NODE,
    const _gdsl_node_write_func_t WRITE_F,
    FILE* OUTPUT_FILE,
    void* USER_DATA
    );
# 284 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_write_xml (const _gdsl_node_t NODE,
        const _gdsl_node_write_func_t WRITE_F,
        FILE* OUTPUT_FILE,
        void* USER_DATA
        );
# 307 "/usr/local/include/gdsl/_gdsl_node.h" 3
extern void
_gdsl_node_dump (const _gdsl_node_t NODE,
   const _gdsl_node_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 34 "/usr/local/include/gdsl/_gdsl_list.h" 2 3
# 54 "/usr/local/include/gdsl/_gdsl_list.h" 3
typedef _gdsl_node_t _gdsl_list_t;
# 73 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern _gdsl_list_t
_gdsl_list_alloc (const gdsl_element_t E
    );
# 90 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_free (_gdsl_list_t L,
   const gdsl_free_func_t FREE_F
   );
# 108 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern bool
_gdsl_list_is_empty (const _gdsl_list_t L
       );
# 119 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern ulong
_gdsl_list_get_size (const _gdsl_list_t L
       );
# 138 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_link (_gdsl_list_t L1,
   _gdsl_list_t L2
   );
# 155 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_insert_after (_gdsl_list_t L,
    _gdsl_list_t PREV
    );
# 172 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_insert_before (_gdsl_list_t L,
     _gdsl_list_t SUCC
     );
# 189 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_remove (_gdsl_node_t NODE
     );
# 212 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern _gdsl_list_t
_gdsl_list_search (_gdsl_list_t L,
      const gdsl_compare_func_t COMP_F,
      void* VALUE
      );
# 239 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern _gdsl_list_t
_gdsl_list_map_forward (const _gdsl_list_t L,
   const _gdsl_node_map_func_t MAP_F,
   void* USER_DATA
   );
# 262 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern _gdsl_list_t
_gdsl_list_map_backward (const _gdsl_list_t L,
    const _gdsl_node_map_func_t MAP_F,
    void* USER_DATA
    );
# 288 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_write (const _gdsl_list_t L,
    const _gdsl_node_write_func_t WRITE_F,
    FILE* OUTPUT_FILE,
    void* USER_DATA
    );
# 313 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_write_xml (const _gdsl_list_t L,
        const _gdsl_node_write_func_t WRITE_F,
        FILE* OUTPUT_FILE,
        void* USER_DATA
        );
# 337 "/usr/local/include/gdsl/_gdsl_list.h" 3
extern void
_gdsl_list_dump (const _gdsl_list_t L,
   const _gdsl_node_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 60 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/_gdsl_bintree.h" 1 3
# 61 "/usr/local/include/gdsl.h" 2 3
# 1 "/usr/local/include/gdsl/_gdsl_bstree.h" 1 3
# 52 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
typedef _gdsl_bintree_t _gdsl_bstree_t;
# 61 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
typedef int (* _gdsl_bstree_map_func_t) (_gdsl_bstree_t TREE,
      void* USER_DATA
      );







typedef void (* _gdsl_bstree_write_func_t) (_gdsl_bstree_t TREE,
         FILE* OUTPUT_FILE,
         void* USER_DATA
         );
# 93 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_alloc (const gdsl_element_t E
      );
# 110 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern void
_gdsl_bstree_free (_gdsl_bstree_t T,
     const gdsl_free_func_t FREE_F
     );
# 132 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_copy (const _gdsl_bstree_t T,
     const gdsl_copy_func_t COPY_F
     );
# 151 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern bool
_gdsl_bstree_is_empty (const _gdsl_bstree_t T
         );
# 165 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern bool
_gdsl_bstree_is_leaf (const _gdsl_bstree_t T
        );
# 176 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern gdsl_element_t
_gdsl_bstree_get_content (const _gdsl_bstree_t T
     );
# 190 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern bool
_gdsl_bstree_is_root (const _gdsl_bstree_t T
        );
# 204 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_get_parent (const _gdsl_bstree_t T
    );
# 218 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_get_left (const _gdsl_bstree_t T
         );
# 232 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_get_right (const _gdsl_bstree_t T
   );
# 244 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern ulong
_gdsl_bstree_get_size (const _gdsl_bstree_t T
         );
# 259 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern ulong
_gdsl_bstree_get_height (const _gdsl_bstree_t T
    );
# 290 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_insert (_gdsl_bstree_t* T,
       const gdsl_compare_func_t COMP_F,
       const gdsl_element_t VALUE,
       int* RESULT
       );
# 318 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern gdsl_element_t
_gdsl_bstree_remove (_gdsl_bstree_t* T,
       const gdsl_compare_func_t COMP_F,
       const gdsl_element_t VALUE
       );
# 345 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_search (const _gdsl_bstree_t T,
       const gdsl_compare_func_t COMP_F,
       const gdsl_element_t VALUE
       );
# 367 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_search_next (const _gdsl_bstree_t T,
     const gdsl_compare_func_t COMP_F,
     const gdsl_element_t VALUE
     );
# 395 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_map_prefix (const _gdsl_bstree_t T,
    const _gdsl_bstree_map_func_t MAP_F,
    void* USER_DATA
    );
# 419 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_map_infix (const _gdsl_bstree_t T,
   const _gdsl_bstree_map_func_t MAP_F,
   void* USER_DATA
   );
# 443 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern _gdsl_bstree_t
_gdsl_bstree_map_postfix (const _gdsl_bstree_t T,
     const _gdsl_bstree_map_func_t MAP_F,
     void* USER_DATA
     );
# 470 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern void
_gdsl_bstree_write (const _gdsl_bstree_t T,
      const _gdsl_bstree_write_func_t WRITE_F,
      FILE* OUTPUT_FILE,
      void* USER_DATA
      );
# 496 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern void
_gdsl_bstree_write_xml (const _gdsl_bstree_t T,
   const _gdsl_bstree_write_func_t WRITE_F,
   FILE* OUTPUT_FILE,
   void* USER_DATA
   );
# 521 "/usr/local/include/gdsl/_gdsl_bstree.h" 3
extern void
_gdsl_bstree_dump (const _gdsl_bstree_t T,
     const _gdsl_bstree_write_func_t WRITE_F,
     FILE* OUTPUT_FILE,
     void* USER_DATA
     );
# 62 "/usr/local/include/gdsl.h" 2 3
# 82 "/usr/local/include/gdsl.h" 3
extern const char*
gdsl_get_version (void);
# 3 "end.h" 2
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4


# 96 "/usr/include/stdlib.h" 3 4


typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;



# 140 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;




extern double atof (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern int atoi (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern long int atol (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





__extension__ extern long long int atoll (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





extern double strtod (__const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

# 182 "/usr/include/stdlib.h" 3 4


extern long int strtol (__const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




__extension__
extern long long int strtoq (__const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





__extension__
extern long long int strtoll (__const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

# 279 "/usr/include/stdlib.h" 3 4
extern double __strtod_internal (__const char *__restrict __nptr,
     char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern float __strtof_internal (__const char *__restrict __nptr,
    char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern long double __strtold_internal (__const char *__restrict __nptr,
           char **__restrict __endptr,
           int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern long int __strtol_internal (__const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;



extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
      char **__restrict __endptr,
      int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;



__extension__
extern unsigned long long int __strtoull_internal (__const char *
         __restrict __nptr,
         char **__restrict __endptr,
         int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 429 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;


extern long int a64l (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
# 445 "/usr/include/stdlib.h" 3 4
extern long int random (void) __attribute__ ((__nothrow__));


extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));



extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern int rand (void) __attribute__ ((__nothrow__));

extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));




extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));







extern double drand48 (void) __attribute__ ((__nothrow__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int lrand48 (void) __attribute__ ((__nothrow__));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int mrand48 (void) __attribute__ ((__nothrow__));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));









extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;







extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));

extern void free (void *__ptr) __attribute__ ((__nothrow__));




extern void cfree (void *__ptr) __attribute__ ((__nothrow__));



# 1 "/usr/include/alloca.h" 1 3 4
# 25 "/usr/include/alloca.h" 3 4
# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 26 "/usr/include/alloca.h" 2 3 4







extern void *alloca (size_t __size) __attribute__ ((__nothrow__));






# 613 "/usr/include/stdlib.h" 2 3 4




extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;




extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));

# 658 "/usr/include/stdlib.h" 3 4


extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern char *__secure_getenv (__const char *__name)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int setenv (__const char *__name, __const char *__value, int __replace)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));


extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));






extern int clearenv (void) __attribute__ ((__nothrow__));
# 698 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 709 "/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 729 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;








extern int system (__const char *__command) ;

# 755 "/usr/include/stdlib.h" 3 4
extern char *realpath (__const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__)) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);









extern void *bsearch (__const void *__key, __const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) ;



extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));



extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;












extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;

# 820 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));

extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));







extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int mbtowc (wchar_t *__restrict __pwc,
     __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));

extern size_t wcstombs (char *__restrict __s,
   __const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__));








extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 925 "/usr/include/stdlib.h" 3 4
extern int posix_openpt (int __oflag) ;
# 960 "/usr/include/stdlib.h" 3 4
extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 976 "/usr/include/stdlib.h" 3 4

# 4 "end.h" 2
# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4





# 1 "/usr/lib/gcc/i486-linux-gnu/4.1.3/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4




extern void *memcpy (void *__restrict __dest,
       __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memmove (void *__dest, __const void *__src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
        int __c, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));





extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));

# 82 "/usr/include/string.h" 3 4


extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
        size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcoll (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern size_t strxfrm (char *__restrict __dest,
         __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

# 130 "/usr/include/string.h" 3 4
extern char *strdup (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 165 "/usr/include/string.h" 3 4


extern char *strchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));

extern char *strrchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));

# 181 "/usr/include/string.h" 3 4



extern size_t strcspn (__const char *__s, __const char *__reject)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern size_t strspn (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strpbrk (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strstr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));



extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));




extern char *__strtok_r (char *__restrict __s,
    __const char *__restrict __delim,
    char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
         char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
# 240 "/usr/include/string.h" 3 4


extern size_t strlen (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));

# 254 "/usr/include/string.h" 3 4


extern char *strerror (int __errnum) __attribute__ ((__nothrow__));

# 270 "/usr/include/string.h" 3 4
extern int strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__xpg_strerror_r") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
# 294 "/usr/include/string.h" 3 4
extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern void bcopy (__const void *__src, void *__dest, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *index (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


extern char *rindex (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));



extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 331 "/usr/include/string.h" 3 4
extern int strcasecmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 354 "/usr/include/string.h" 3 4
extern char *strsep (char **__restrict __stringp,
       __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
# 432 "/usr/include/string.h" 3 4

# 5 "end.h" 2
# 20 "end.h"
typedef enum { SUJEITO=12 , OBJETO} _funcao_sintatica;

typedef enum { ELIPSE=22, PRONOME ,SND } _classificacao;

typedef enum { COREFERENCIA=32, MEMBRO_DE , ACOMODACAO} _relacao;

typedef enum { MASCULINO=42, FEMININO } _genero;

typedef enum { SINGULAR=52 , PLURAL} _numero;

typedef enum { AUMENTATIVO=62 , DIMINUTIVO } _grau;

typedef struct _word{
 char *termo;
 _funcao_sintatica funcao_sintatica;
 _classificacao classificacao;
 _gdsl_bintree_t end;
 _relacao relacao;
 struct _word *antecedente;

 _genero genero;
 _numero numero;
 _grau grau;

}Word,* word;

typedef struct _end{
 word fexp;
 word fimp;
 gdsl_list_t lrexp;
 gdsl_list_t lrimp;
 _gdsl_bintree_t end;
}END, * End;

typedef _gdsl_bintree_t End_t;

typedef gdsl_list_t segmento_t;


End interpretacao_fora_contexto_segmento(segmento_t);


End_t interpretacao_em_contexto(End_t end , End no);
# 2 "end.c" 2
# 18 "end.c"
void error_log(void * arg1 , void * arg2){
 fprintf(stderr,"Error in comparison beetween %p-%p",arg1,arg2);
}
# 29 "end.c"
long int compare_words_lrexp(const gdsl_element_t w , void * value){
word word1,word2;

 if( !w || ! value){
  error_log(w,value);
  return -128;
 }
  else{
 word1=(word)w;
 word2=(word)value;
  if( word1->classificacao != word2->classificacao )
   return word1->classificacao - word2->classificacao;
  else
   return word1->funcao_sintatica - word2->funcao_sintatica;
 }
 error_log(w,value);
 return -128;
}







End interpretacao_fora_contexto_segmento (segmento_t seg){
End end=((void *)0);
 if(seg && gdsl_list_get_size(seg)){
  end = (End) malloc(sizeof(END));
  end->lrexp = seg;
  gdsl_list_sort(end->lrexp, &compare_words_lrexp);
  end->fexp= gdsl_list_get_head(end->lrexp);
 }
return end;
}







gdsl_list_t end_get_list_segmentos_visiveis( End_t end){
gdsl_list_t seg_visiveis=((void *)0);
End_t aux_tree=((void *)0);
 if(end!=((void *)0)){
  seg_visiveis = gdsl_list_alloc("SV",((void *)0),((void *)0));
  aux_tree = end;
  do{
   if(aux_tree){
    gdsl_list_insert_tail(seg_visiveis,
     _gdsl_bintree_get_content(aux_tree));
   }
  }while(aux_tree = _gdsl_bintree_get_right(aux_tree));
 }
return seg_visiveis;
}







int isValid(word w){
 return w->funcao_sintatica && w->genero && w->numero && w->grau &&
  w->funcao_sintatica != -128 && w->genero != -128 &&
  w->numero != -128 && w->grau != -128;
}
# 106 "end.c"
_relacao encontrar_relacao_palavras( word w1 , word w2){
 if(w1 && w2 && isValid(w1) && isValid(w2)){
  if( (w1->genero == w2->genero) &&
      (w1->grau == w2->grau) &&
      (w1->numero == w2->numero) &&
      (w1->funcao_sintatica == w2->funcao_sintatica))
   return COREFERENCIA;

  if( (w1->genero == w2->genero) &&
      (w1->numero == PLURAL) && (w2->numero == SINGULAR) &&
      (w1->funcao_sintatica == w2->funcao_sintatica))
   return MEMBRO_DE;

  return ACOMODACAO;
 }
 return -128;
}
# 131 "end.c"
int isCAND(word w){
 return w->classificacao == ELIPSE || w->classificacao == PRONOME ||
        w->classificacao == SND;
}







int map_words_cand(gdsl_element_t element ,gdsl_location_t t, void * user_data){
word w = (word) element;
gdsl_list_t cand_list;
 if(w && user_data){
  if(isCAND(w)){
   gdsl_list_insert_tail(cand_list, w);
  }
  return GDSL_MAP_CONT;
 }
 return GDSL_MAP_STOP;
}
# 161 "end.c"
gdsl_list_t get_cand_words(End novo){
gdsl_list_t cand=((void *)0);
 if(novo){
  cand=gdsl_list_alloc("CAND",((void *)0),((void *)0));


  gdsl_list_map_forward(novo->lrexp,&map_words_cand,cand);
 }
return cand;
}
# 180 "end.c"
int _encontrar_relacao ( End no , End novo, int fp(word data , word data2, _relacao r)){
gdsl_list_t cand_list, sv_list;
word cand,sv_word;
_relacao last_relation_found;
int relations_count=0,it_cand, it_sv;
 if(no && novo){
  cand_list = get_cand_words(novo);
  sv_list = no->lrexp;
  it_cand = 0 ; gdsl_list_cursor_t cand_cursor; cand_cursor = gdsl_list_cursor_alloc(cand_list); gdsl_list_cursor_move_to_head(cand_cursor); for( cand = (word)gdsl_list_get_head(cand_list); it_cand < gdsl_list_get_size(cand_list); it_cand++, gdsl_list_cursor_step_forward(cand_cursor), cand= (word) gdsl_list_cursor_get_content( cand_cursor)){
   it_sv = 0 ; gdsl_list_cursor_t sv_cursor; sv_cursor = gdsl_list_cursor_alloc(sv_list); gdsl_list_cursor_move_to_head(sv_cursor); for( sv_word = (word)gdsl_list_get_head(sv_list); it_sv < gdsl_list_get_size(sv_list); it_sv++, gdsl_list_cursor_step_forward(sv_cursor), sv_word= (word) gdsl_list_cursor_get_content( sv_cursor)){
        if((last_relation_found =
    encontrar_relacao_palavras(
    sv_word, cand))!=-128){
     relations_count++;
     if(fp){
      (*fp)(sv_word,cand,
      last_relation_found);
     }
    }
   }
  }
 }
 return relations_count;

}


int encontrar_relacao(End no , End novo){
 return _encontrar_relacao(no,novo,((void *)0));
}




int compare_end_nodes(End e , End e2){
 return (e->fexp==e2->fexp) && (e->fimp==e2->fimp) &&
        (e->lrexp==e2->lrexp) && (e->lrimp==e2->lrimp) &&
        (e->end==e2->end);
}
# 227 "end.c"
int find_node( const _gdsl_bintree_t e, void * segmento){
End tree_element,seg_element;

 if(e && segmento){
  tree_element = (End)e;
  seg_element = (End)segmento;
  if(compare_end_nodes(tree_element,seg_element)==0)
   return GDSL_MAP_STOP;
  return GDSL_MAP_CONT;
 }

return GDSL_MAP_STOP;

}

int estabelecer_relacao_palavras(word t, word a, _relacao relacao){

 if(t && a && relacao && relacao != -128 ){
  a->antecedente = t;
  a->relacao = relacao;
  return 1;
 }
return 0;
}
# 260 "end.c"
End_t estabelecer_relacao(End sv , End novo, End_t tree){
_gdsl_bintree_t parent,cursor,right;
End seg_pai;
 if(sv && novo &&
    _encontrar_relacao(sv,novo, &estabelecer_relacao_palavras)){
  seg_pai = (End) malloc(sizeof(END));
  memcpy(seg_pai,sv,sizeof(END));
  cursor=_gdsl_bintree_map_prefix(tree,&find_node,sv);
  if(cursor == ((void *)0) ){
   perror("cursor not found");
   return;
  }
  parent=_gdsl_bintree_get_parent(cursor);
  if(parent != ((void *)0)){
   _gdsl_bintree_set_right( parent,
    _gdsl_bintree_alloc(
    seg_pai,cursor,
    _gdsl_bintree_alloc(novo,((void *)0),((void *)0))));
  }
  else{
   _gdsl_bintree_set_left(tree,cursor);
   _gdsl_bintree_set_right(tree,
    _gdsl_bintree_alloc(novo,((void *)0),((void *)0)));
   _gdsl_bintree_set_content(tree,seg_pai);
  }


 }
 else
  perror("erro ao estabelecer relacao");
 return tree;
}
# 301 "end.c"
End_t interpretacao_em_contexto(End_t end , End no){
gdsl_list_t sv=((void *)0);
End aux_no, selected_node;
int relations_count=-1,last_relation_count;
 if(end==((void *)0)){

  end=_gdsl_bintree_alloc(no,((void *)0),((void *)0));
 }
 else{
  sv= end_get_list_segmentos_visiveis(end);
  for(aux_no = (End)gdsl_list_get_tail(sv);
   !gdsl_list_is_empty(sv);
    gdsl_list_remove_tail(sv),
    aux_no = gdsl_list_get_tail(sv)){

   last_relation_count = encontrar_relacao(aux_no,no);




   if(last_relation_count > relations_count){
    selected_node = aux_no;
    relations_count = last_relation_count;
   }
  }

  estabelecer_relacao(selected_node,no,end);

 }
 return end;
}

void end_insert_value ( End_t tree , End no){
 interpretacao_em_contexto(tree,no);
}
